package pe.com.csi.pm.regexiv.dao;

import java.util.ArrayList;
import java.util.List;

import android.content.ContentValues;
import android.content.Context;
import android.database.Cursor;
import android.database.SQLException;
import android.database.sqlite.SQLiteDatabase;

import pe.com.csi.pm.regexiv.bean.Ruta;
import pe.com.csi.pm.regexiv.db.DaoManager;
import pe.com.csi.pm.regexiv.interfaces.RutaDAO;

public class RutaDAOImpl implements RutaDAO {

	private Context context;

	public RutaDAOImpl(Context context) {
		this.context = context;
	}

	@Override
	public int registrarRuta(Ruta ruta) {
		System.out.println("entro daoimpl registrar");
		int rows = 0;
		DaoManager usdbh = new DaoManager(context);
		SQLiteDatabase db = usdbh.getWritableDatabase();
		try {

			db.beginTransaction();
			ContentValues valores = new ContentValues();
			valores.put("NUMERORUTA", ruta.getNumeroRta());
			valores.put("NOMBRERTA", ruta.getNombreRta());
			valores.put("PROGINIRTA", ruta.getProgIniRta());
			valores.put("PROGFINRTA", ruta.getProgFinRta());
			valores.put("NREALRTA", ruta.getNumRealRta());
			long pos = db.insert("RUTA", null, valores);
			System.out.println("REGISTRADO CONCESION " + pos);
			if (pos == -1)
				rows = 0;
			else
				rows = 1;
			db.setTransactionSuccessful();
		} catch (SQLException e) {
			rows = 0;
			e.printStackTrace();
		} finally {
			db.endTransaction();
			db.close();
		}

		return rows;
	}

	@Override
	public List<Ruta> obtenerRutas() {
		List<Ruta> lstrutas = new ArrayList<Ruta>();
		try {
			String sql = "SELECT NUMERORUTA, NOMBRERTA, PROGINIRTA, PROGFINRTA, NREALRTA FROM RUTA";
			System.out.println("entro a obtener obtenerRutas");
			DaoManager usdbh = new DaoManager(context);

			SQLiteDatabase db = usdbh.getReadableDatabase();

			Cursor c = db.rawQuery(sql, null);
			Ruta ruta;

			if (c.moveToFirst()) {
				do {

					Long numeroRta = !c.isNull(0) ? c.getLong(0) : null;
					String nombreRta = !c.isNull(1) ? c.getString(1) : "";
					Double progIniRta = !c.isNull(2) ? c.getDouble(2) : null;
					Double progFinRta = !c.isNull(3) ? c.getDouble(3) : null;
					String numRealRta = !c.isNull(4) ? c.getString(4) : "";

					ruta = new Ruta();
					ruta.setNumeroRta(numeroRta);
					ruta.setNombreRta(nombreRta);
					ruta.setProgIniRta(progIniRta);
					ruta.setProgFinRta(progFinRta);
					ruta.setNumRealRta(numRealRta);
					ruta.setEtiqueta(nombreRta);

					lstrutas.add(ruta);

				} while (c.moveToNext());
			}
			c.close();
			db.close();
		} catch (Exception e) {
			lstrutas = new ArrayList<Ruta>();
			e.printStackTrace();
		}
		return lstrutas;
	}

	@Override
	public int eliminarAllRutas() {
		int rows = 0;
		DaoManager usdbh = new DaoManager(context);
		SQLiteDatabase db = usdbh.getWritableDatabase();
		try {
			db.beginTransaction();
			db.execSQL("DELETE FROM RUTA");
			rows = 1;
			db.setTransactionSuccessful();
		} catch (Exception e) {
			rows = -1;
			e.printStackTrace();
		} finally {
			db.endTransaction();
			db.close();
		}
		return rows;
	}

}
